package com.spring.test.aop.chain;

import java.util.List;

public class Chain {
    private List<BaseHandler> handlers;

    private int index = -1;  // 索引，表示当前链执行到第几个了

    public  Chain(List<BaseHandler> handlers){
        this.handlers = handlers;  // 所有的切面
    }

    public void proceed(){
        if(index == handlers.size() - 1){  //链执行到最后一个后
            System.out.println("i am here");  //执行真正的业务逻辑
        }else{
            handlers.get(++index).execute(this);  // 否则，增加索引找下一个切面，先执行它的
        }
    }
}
